var multer = require('multer');
const Path = require('path');
const fs = require('fs');

//创建一个磁盘存储对象
const storage = multer.diskStorage({
    //存储目录
    destination: function (req, file, cb) {
        const date = new Date();
        let path = `public/${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
        //调用递归函数 生成目录路径
        mkdirsSync(path);
        cb(null, path);
    },
    //生成文件名
    filename: function (req, file, cb) {
        let extname = file.originalname.split('.');
        extname = extname[extname.length - 1];
        cb(null, new Date().getTime() + Math.random() + '.' + extname);
    }
});

//递归函数创建多级目录
function mkdirsSync(dirname) {
    if (fs.existsSync(dirname)) {
        return true;
    } else {
        if (mkdirsSync(Path.dirname(dirname))) {
            fs.mkdirSync(dirname);
            return true;
        }
    }
}

// 创建一个存储引擎，使用磁盘存储对象
const upload = multer({
    storage: storage,
    // limits: { fileSize: 1024 * 1024 }
})

//生成一个实例存储引擎，缺点是文件保存路径只能写死
// const upload = multer({
//     dest: 'upload/'
// })

//upload.single(name)---上传单个文件   upload.array(name)---上传多个文件
//拦截所有的请求体中的数据，将上传的文件保存（自动重命名）在/upload文件夹中（如果不存在则自动建立）
//表单提交的其他信息附加到req.body上，上传的文件及保存后的信息附加到req.file中
router.post('/upload', upload.array('b'), function (req, res) {
    console.log('body', req.body);
    console.log('file', req.file);
    res.json(req.file);
    res.json(req.body);
})
